package com.zhang.set;

/**
 * @author 张吉鑫
 * @Description Set集合
 * @date 2021/3/21 20:02
 */
public interface Set<E> {
    /**
     * 元素数量
     * @return
     */
    int size();

    /**
     * 判断是否为空
     * @return
     */
    boolean isEmpty();

    /**
     * 清空所有元素
     */
    void clear();

    /**
     * 查看元素是否存在
     * @param element
     * @return
     */
    boolean contains(E element);

    /**
     * 添加元素
     * @param element
     */
    void add(E element);

    /**
     * 删除元素
     * @param element
     */
    void remove(E element);

    /**
     * 遍历元素
     * @param visitor
     */
    void traversal(Visitor<E> visitor);

    public static abstract class Visitor<E>{
        boolean stop;

        /**
         * 访问元素
         * @param element
         * @return
         */
        public abstract boolean visit(E element);
    }
}
